﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NutriLeaf.Web.Model;

namespace NutriLeaf.Web.Core.Tips
{
    interface ITips
    {
          void InsertTip(Tip tip,ref NutriLeafDBEntities context);

          void InsertTip(Tip tip, TipCategory category, ref NutriLeafDBEntities context);

          void InsertTip(Tip tip, int tipCategoryId, ref NutriLeafDBEntities context);

          void InsertTip(Tip tip, TipCategory category, int userId, ref NutriLeafDBEntities context);

          void ApproveTip(Tip tip, ref NutriLeafDBEntities context);

          void ApproveTip(List<Tip> tip, ref NutriLeafDBEntities context);

          void InsertTipCategory(TipCategory category, ref NutriLeafDBEntities context);

          void InsertTipCategegory(TipCategory category, TipCategory parentCategory, ref NutriLeafDBEntities context);

          void InsertTipCategory(TipCategory category, int parentCategoryId, ref NutriLeafDBEntities context);

          void InsertTipCategory(string categoryName, string categoryDescription, int ParentCategoryID, ref NutriLeafDBEntities context);

          void InsertTipCategory(string categoryName, string categoryDescription, ref NutriLeafDBEntities context);

          void InsertTipViewed(TipViewed viewed, ref NutriLeafDBEntities context);

          void InsertTipViewed(Tip tip, User user, ref NutriLeafDBEntities context);

          void InsertTipViewed(int tipId, int userId, ref NutriLeafDBEntities context);

          bool IsTipApproved(int tipId, ref NutriLeafDBEntities context);

          bool IsTipApproved(Tip tip, ref NutriLeafDBEntities context);

          List<Tip> GetAllNotApprovedTips(TipCategory category, ref NutriLeafDBEntities context);

          List<Tip> GetAllNotApprovedTips(ref NutriLeafDBEntities context);

          Tip GetRandomTip(int userId, ref NutriLeafDBEntities context);

          Tip GetRandomTip(int userId, int categoryId, ref NutriLeafDBEntities context);

          Tip GetRandomTip(int userId, TipCategory category, ref NutriLeafDBEntities context);

          void RemoveTip(Tip tip, ref NutriLeafDBEntities context);

          void MoveTipsToNewCategory(List<Tip> tips, TipCategory newCategory, ref NutriLeafDBEntities context);

          void MoveTipsToNewCategory(TipCategory oldCateogry, TipCategory newCategory, ref NutriLeafDBEntities context);

          void RemoveCategory(TipCategory category, ref NutriLeafDBEntities context);

          void RemoveCategory(int categoryId, ref NutriLeafDBEntities context);

          void LikeTip(int tipId, int userId, bool like, ref NutriLeafDBEntities context);

          void LikeTip(Tip tip, User user, bool like, ref NutriLeafDBEntities context);

          void RemoveTipLike(TipsLike tipsLike, ref NutriLeafDBEntities context);

          void RemoveTipViewed(TipViewed tipViewed, ref NutriLeafDBEntities context);

          void UpdateTip(Tip tip, ref NutriLeafDBEntities context);

          void UpdateTipCategory(TipCategory category, ref NutriLeafDBEntities context);

          void UpdateTipLike(TipsLike tipLike, ref NutriLeafDBEntities context);

          void UpdateTipViewed(TipViewed viewed, ref NutriLeafDBEntities context);

          void UpdateUserTipCategory(UserTipCategory category, ref NutriLeafDBEntities context);

          void AddUserTipCategory(int tipCategoryId, int userId, ref NutriLeafDBEntities context);

          void AddUserTipCategory(UserTipCategory category, ref NutriLeafDBEntities context);

          void RemoveUserTipCategory(UserTipCategory category, ref NutriLeafDBEntities context);

          void RemoveUserTipCategory(int userId, int tipCategoryId, ref NutriLeafDBEntities context);

          List<Tip> GetTipsByCategory(int categoryId, ref NutriLeafDBEntities context);

          List<Tip> GetTipsByCategory(TipCategory category, ref NutriLeafDBEntities context);

          List<Tip> GetTipsLikedByUser(int userId, ref NutriLeafDBEntities context);

    }
}
